package com.siashan.toolkit.sms.core.executor;

import com.siashan.toolkit.sms.core.entity.*;

import java.util.*;

/**
 * 发送处理
 *
 * @author siashan
 * @since v1.0.1
 */
public interface SmsSendExecutor {



    /**
     * 发送短信验证码
     *
     * @param verifyData 短信验证码内容
     * @param phone      手机号
     *
     * @return 是否发送成功
     */
    boolean send(SmsVerifyModel verifyData, String phone);

    /**
     * 获取通道
     *
     * @return 通道
     */
    SmsChannel getChannel();

    /**
     * 获取渠道编码
     *
     * @return 渠道编码
     */
    String getChannelCode();

    void  setChannelCode(String channelCode);



    /**
     * 发送批量通知
     *
     * @param smsSendModel 通知参数
     * @param phone 手机号
     * @return 是否发送成功
     */
    boolean send(SmsModel smsSendModel, String phone);


    /**
     * 发送批量通知
     *
     * @param smsSendModel 通知参数
     * @param phones  手机号
     * @return 是否发送成功
     */
    boolean send(SmsModel smsSendModel, Collection<String> phones);


    public SmsFrequencyLimitConfig getFrequencyLimitConfig();

    public SmsWhiteList getWhiteList();

}
